package com.qf.common.dto;


import com.qf.common.constant.MemberConstants;
import lombok.Data;

import javax.validation.constraints.*;

/**
 * @author KING
 * @ClassName: com.qf.common.dto.UserRequest
 * @Description: 用户请求封装对象
 * @date: 2021/10/25 10:28
 */
@Data
public class MemberRequest {
    /**
     * 添加用户分组
     */
    public interface MemberAdd {
    }

    /**
     * 修改用户分组
     */
    public interface MemberUpdate {
    }

    public interface MemberLogin {
    }

    /**
     * 用户表id
     */
    @NotNull(groups = {MemberUpdate.class}, message = MemberConstants.RegexpMsg.ADD_ID)
    private Long uid;

    /**
     * 用户昵称   @NotBlank只能作用在String上，不能为null
     */
    @NotBlank(groups = MemberAdd.class)
    @Pattern(groups = {MemberAdd.class, MemberUpdate.class},
            regexp = MemberConstants.Regexp.REGEXP_NICKNAME, message = MemberConstants.RegexpMsg.MSG_NICKNAME)
    private String nickname;

    /**
     * 用户姓名
     */
    @NotBlank(groups = MemberAdd.class, message = "用户名不能为空")
    @Pattern(groups = {MemberAdd.class, MemberUpdate.class, MemberLogin.class},
            regexp = MemberConstants.Regexp.REGEXP_USERNAME, message = MemberConstants.RegexpMsg.MSG_USERNAME)
    private String username;

    /**
     * 用户密码
     */
    @NotBlank(groups = {MemberLogin.class})
    @Pattern(groups = {MemberAdd.class, MemberUpdate.class, MemberLogin.class},
            regexp = MemberConstants.Regexp.REGEXP_PASSWORD, message = MemberConstants.RegexpMsg.MSG_PASSWORD)
    private String password;

    /**
     * 用户头像
     */
    private String photo;

    /**
     * 性别：0 未知， 1男， 1 女
     */
    private Integer gender;

    /**
     * 用户手机号
     */
    @NotBlank(groups = MemberAdd.class)
    @Pattern(groups = {MemberAdd.class, MemberUpdate.class},
            regexp = MemberConstants.Regexp.REGEXP_PHONE, message = MemberConstants.RegexpMsg.MSG_PHONE)
    private String phone;

    /**
     * 用户邮箱
     */
    @Email(groups = {MemberAdd.class, MemberUpdate.class}, message = MemberConstants.RegexpMsg.MSG_EMAIL)
    private String email;

}
